home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / tsbgex / src / neko / draw16.asm < prev    next >
Encoding:
Assembly Source File  |  1994-11-16  |  1.2 KB  |  76 lines

  1.     assume    cs:text
  2. text    segment para public 'CODE'
  3.  
  4. ; assume BITMAP_WIDTH==32
  5.     public    _draw16,_col32k0,_col32k1
  6. _draw16    proc    near
  7.     push    ebp
  8.     push    ebx
  9.     push    ecx
  10.     push    edx
  11.     push    esi
  12.     push    edi
  13.     mov    edi,28[esp]    ; edi <-- work
  14.     mov    ebp,36[esp]    ; ebp <-- bitmap data structure
  15.     mov    esi,[ebp]    ; esi <-- PixelPattern
  16.     add    esi,40[esp]
  17.     mov    edx,4[ebp]    ; edx <-- MaskPattern
  18.     add    edx,40[esp]
  19.     mov    ebp,44[esp]    ; bit mask
  20. #0:
  21.     mov    ecx,48[esp]    ; ecx <-- width
  22.     mov    eax,[esi]    ; eax <-- *pix++
  23.     add    esi,4
  24.     mov    ebx,[edx]    ; ebx <-- *mask++
  25.     add    edx,4
  26. #1:
  27.     test    ebx,ebp        ; mask check
  28.     je    SHORT #3
  29.     test    eax,ebp        ; pixel check
  30.     je    SHORT #2
  31. black:
  32. _col32k0 = black+3
  33.     mov    [edi],word ptr 0H    ; black
  34.     jmp    SHORT #3
  35. #2:
  36. white:
  37. _col32k1 = white+3
  38.     mov    [edi],word ptr 7fffH    ; white
  39. #3:
  40.     add    edi,2
  41.     shr    eax,1
  42.     shr    ebx,1
  43.     loop    #1
  44.     
  45.     add    edi,32[esp]
  46.     dec    dword ptr 52[esp]    ; hight--
  47.     jnz    SHORT #0
  48.     pop    edi
  49.     pop    esi
  50.     pop    edx
  51.     pop    ecx
  52.     pop    ebx
  53.     pop    ebp
  54.     ret
  55. _draw16    endp
  56.  
  57.     public    _putword
  58. _putword proc near
  59.     push    ebx
  60.     mov    eax,8[esp]
  61.     mov    bx,12[esp]
  62.     mov    fs:[eax],bx
  63.     pop    ebx
  64.     ret
  65. _putword endp
  66.     
  67.     public    _getword
  68. _getword proc near
  69.     mov    eax,4[esp]
  70.     mov    ax,fs:[eax]
  71.     ret
  72. _getword endp
  73.     
  74. text    ends
  75.     end
  76.